//
//  CZNetworkTool.swift
//  weibo
//
//  Created by Ken on 16/3/21.
//  Copyright © 2016年 Ken. All rights reserved.
//


import UIKit
import AFNetworking

class CZNetworkTool: NSObject {
    // 单例
    static let sharedInstance: CZNetworkTool = CZNetworkTool()  // 类里面是可以访问private的方法
    
    /// afn
    private let afnManager: AFHTTPSessionManager = AFHTTPSessionManager(baseURL: CZBaseURL)
    
    // 私有化构造函数
    private override init() {
        super.init()
        
        // 设置afn支持 text/plain类型
        //        print("afnManager.responseSerializer.acceptableContentTypes: \(afnManager.responseSerializer.acceptableContentTypes)")
        afnManager.responseSerializer.acceptableContentTypes?.insert("text/plain")
    }
    
    // 如果在控制器或VM,直接调用AFN的方法,如果AFN以后不好用,想换其他的框架或者AFN升级,请求参数更换,到时候要更换的时候就非常麻烦
    /// 自己来封装GET请求
    func requestGET(URLString: String, parameters: AnyObject?, requestCallback: (result: [String: AnyObject]?, error: NSError?) -> ()) {
        
        afnManager.GET(URLString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            // 网络请求回来的都是JSON格式
            let dict = result as? [String: AnyObject]
            requestCallback(result: dict, error: nil)
            }) { (_, error) -> Void in
                requestCallback(result: nil, error: error)
        }
    }
    
    /// 自己来封装POST请求
    func requestPOST(URLString: String, parameters: AnyObject?, requestCallback: (result: [String: AnyObject]?, error: NSError?) -> ()) {
        afnManager.POST(URLString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            // 网络请求回来的都是JSON格式
            let dict = result as? [String: AnyObject]
            requestCallback(result: dict, error: nil)
            }) { (_, error) -> Void in
                requestCallback(result: nil, error: error)
        }
    }
}

